/**
 * @brief 线性表的抽象模板类
 * @version 1.0
 * @author TMJ
 * @date 2023-12-22
 */

#ifndef LINEAR_TABLE_LINEAR_LIST_H
#define LINEAR_TABLE_LINEAR_LIST_H

// 顺序表的抽象模板类
template<typename type>
class LinearList {
public:

    // 获取线性表的长度
    virtual int getLength() const = 0;

    // 获取指定位置的元素（通过data返回）
    virtual bool getData(int pos, type& data) const = 0;

    // 设置指定位置的值
    virtual bool setData(int pos, const type& data) const = 0;

    // 在指定位置插入新的数据（指定位置前面）
    virtual bool insertData(int pos, const type& data) = 0;

    // 删除指定位置的元素
    virtual bool removeData(int pos, type& data) = 0;

    // 判断顺序表是否为空
    virtual bool isEmpty() const = 0;

    // 打印顺序表
    virtual void print() = 0;
};

#endif //LINEAR_TABLE_LINEAR_LIST_H
